topic "Шаблоны пакета/проекта U++";
[l288;i1120;a17;O9;~~~.1408;2 $$1,0#10431211400427159095818037425705:param]
[a83;*R6 $$2,5#31310162474203024125188417583966:caption]
[H4;b83;*4 $$3,5#07864147445237544204411237157677:title]
[i288;O9;C2 $$4,6#40027414424643823182269349404212:item]
[b42;a42;ph2 $$5,5#45413000475342174754091244180557:text]
[l288;b17;a17;2 $$6,6#27521748481378242620020725143825:desc]
[l321;t246;C@5;1 $$7,7#20902679421464641399138805415013:code]
[b2503;2 $$8,0#65142375456100023862071332075487:separator]
[*@(0.0.255)2 $$9,0#83433469410354161042741608181528:base]
[t4167;C2 $$10,0#37138531426314131251341829483380:class]
[l288;a17;*1 $$11,11#70004532496200323422659154056402:requirement]
[i417;b42;a42;O9;~~~.416;2 $$12,12#10566046415157235020018451313112:tparam]
[b167;C2 $$13,13#92430459443460461911108080531343:item1]
[i288;a42;O9;C2 $$14,14#77422149456609303542238260500223:item2]
[*@2$(0.128.128)2 $$15,15#34511555403152284025741354420178:NewsDate]
[l321;*C$7;2 $$16,16#03451589433145915344929335295360:result]
[l321;b83;a83;*C$7;2 $$17,17#07531550463529505371228428965313:result`-line]
[l160;t4167;*C+117 $$18,5#88603949442205825958800053222425:package`-title]
[2 $$19,0#53580023442335529039900623488521:gap]
[t4167;C2 $$20,20#70211524482531209251820423858195:class`-nested]
[b50;2 $$21,21#03324558446220344731010354752573:Par]
[pdt236;*R4 $$22,22#40103207490822212450221436281730:WW`_title`_00]
[pht236;R2 $$23,23#29400012433312235252470404892822:WW`_title`_0]
[l236;pht236;R2 $$24,24#00454607453530313094118224015203:WW`_title`_1]
[l472;pht236;R2 $$25,25#33277462411042730011509123771117:WW`_title`_2]
[t236;2 $$26,26#71381142429583301433821046382111:WW`_screen]
[l236;t236;R2 $$27,27#07510943411664463674260230433339:WW`_cont`_1]
[l236;r236;t236;R2 $$28,28#54451302481117114292509401142872:WW`_text`_1]
[l236;r236;O2;t236;R2 $$29,29#48341504488149500391468343047403:WW`_list`_1]
[#l472;r236;t236;R2 $$30,30#52952442412790244233520900630609:WW`_text`_2]
[l472;t236;R2 $$31,31#20231881437551803363040212070507:WW`_cont`_2]
[l709;t236;R2 $$32,32#54252048405397105149130048740284:WW`_cont`_3]
[l472;r236;O2;t236;R2 $$33,33#30072837473536604092861621497204:WW`_list`_2]
[l472;O2;t236;C2 $$34,34#06230149405604125301230058170633:WW`_code`_2`_b]
[l472;t236;C2 $$35,35#15131915417316391232700012624331:WW`_code`_2]
[l709;r236;t236;C2 $$36,36#23923133421414554955209105909811:WW`_code`_3]
[#l236;r236;O2;t236;R2 $$37,37#03093274465041652393701215017436:WW`_text`_1`_b]
[#r236;t236;R2 $$38,38#44044703428202477345708892265501:WW`_text`_0]
[r236;t236;C2 $$39,39#64654381424019708140519310021423:WW`_code`_0]
[l236;t236;C2 $$40,40#50502365423032532055871338576202:WW`_code`_1]
[#l472;r236;O2;t236;R2 $$41,41#91819714438380021404078440414145:WW`_text`_2`_b]
[b83;*+117 $$42,42#2AC2FD302E8CD436942CC99374D81489:SubTitle]
[2 $$0,0#00000000000000000000000000000000:Default]
[{_}%RU-RU 
[s2; [@3 Шаблоны пакета/проекта U`+`+]&]
[s3; [@3 Содержание]&]
[s0; &]
[s3; [^`#1^ 1. Пролог]&]
[s3; [^`#2^ 2. Описание]&]
[s3; [^`#3^ 3. Готовые к использованию Шаблоны]&]
[s3;     [^`#3`_1^ 3.1 Обзор]&]
[s3;     [^`#3`_2^ 3.2 Базовое приложение CtrlLib]&]
[s3;     [^`#3`_3^ 3.3 Консольное приложение (без 
U`+`+)]&]
[s3;     [^`#3`_4^ 3.4 Консольный проект Core]&]
[s3;     [^`#3`_5^ 3.5 Приложение CtrlLib с главным 
окном]&]
[s3;     [^`#3`_6^ 3.6 Проект SDL (без U`+`+)]&]
[s3;     [^`#3`_7^ 3.7 Пакет SDL с Core]&]
[s3; [^`#4^ 4. Выкладка Файла Шаблона]&]
[s3;     [^`#4`_1^ 4.1 Расширение]&]
[s3;     [^`#4`_2^ 4.2 Секции]&]
[s3;     [^`#4`_3^ 4.3 Порядок секций]&]
[s3;     [^`#4`_4^ 4.4 Размер]&]
[s3; [^`#5^ 5. Синтаксис]&]
[s3;     [^`#5`_1^ 5.1 Комментарии]&]
[s3;     [^`#5`_2^ 5.2 Пробелы]&]
[s3;     [^`#5`_3^ 5.3 Базовое Правило]&]
[s3;     [^`#5`_4^ 5.4 Разграничители]&]
[s3;         [^`#5`_4`_1^ 5.4.1 `"`@`@`"]&]
[s3;         [^`#5`_4`_2^ 5.4.2 `"??`"]&]
[s3;     [^`#5`_5^ 5.5 Выражения]&]
[s3;         [^`#5`_5`_1^ 5.5.1 Базовое Правило]&]
[s3;         [^`#5`_5`_2^ 5.5.2 `"`@`@][/^`#5`_5`_2^ выражение`_имяф][^`#5`_5`_2^ `"
]&]
[s3;         [^`#5`_5`_3^ 5.5.3 `"??][/^`#5`_5`_3^ выражение][^`#5`_5`_3^ `"]&]
[s3;         [^`#5`_5`_4^ 5.5.4 `"<: ... :>`"]&]
[s3;         [^`#5`_5`_5^ 5.5.5 `"<:? ][/^`#5`_5`_5^ выражение][^`#5`_5`_5^ :> 
... <:.:>`"]&]
[s3;         [^`#5`_5`_6^ 5.5.6 `"<:? ][/^`#5`_5`_6^ выражение][^`#5`_5`_6^ :> 
... <:/:> ... <:.:>`"]&]
[s3;     [^`#5`_6^ 5.6 `"PACKAGE`"]&]
[s3;         [^`#5`_6`_1^ 5.6.1 Описание]&]
[s3;         [^`#5`_6`_2^ 5.6.2 Использование]&]
[s3;     [^`#5`_7^ 5.7 `"PACKAGE`_TOUPPER`"]&]
[s3;         [^`#5`_7`_1^ 5.7.1 Описание]&]
[s3;         [^`#5`_7`_2^ 5.7.2 Использование]&]
[s3;     [^`#5`_8^ 5.8 `"PACKAGE`_TOUPPER`_CAPS`"]&]
[s3;         [^`#5`_8`_1^ 5.8.1 Описание]&]
[s3;         [^`#5`_8`_2^ 5.8.2 Использование]&]
[s3;     [^`#5`_9^ 5.9 Строка Заголовочника]&]
[s3;         [^`#5`_9`_1^ 5.9.1 Описание]&]
[s3;         [^`#5`_9`_2^ 5.9.2 `"template`"]&]
[s3;         [^`#5`_9`_3^ 5.9.3 `"][/^`#5`_9`_3^ Имя][^`#5`_9`_3^ `"]&]
[s3;         [^`#5`_9`_4^ 5.9.4 `"main`", `"sub`"]&]
[s3;         [^`#5`_9`_5^ 5.9.5 Использование]&]
[s3;     [^`#5`_10^ 5.10 `"filename`"]&]
[s3;         [^`#5`_10`_1^ 5.10.1 Описание]&]
[s3;         [^`#5`_10`_2^ 5.10.2 Определение]&]
[s3;         [^`#5`_10`_3^ 5.10.3 Использование]&]
[s3;     [^`#5`_11^ 5.11 `"id`"]&]
[s3;         [^`#5`_11`_1^ 5.11.1 Описание]&]
[s3;         [^`#5`_11`_2^ 5.11.2 Определение]&]
[s3;         [^`#5`_11`_3^ 5.11.3 Использование]&]
[s3;     [^`#5`_12^ 5.12 `"option`"]&]
[s3;         [^`#5`_12`_1^ 5.12.1 Описание]&]
[s3;         [^`#5`_12`_2^ 5.12.2 Определение]&]
[s3;         [^`#5`_12`_3^ 5.12.3 Использование]&]
[s3;     [^`#5`_13^ 5.13 `"select`"]&]
[s3;         [^`#5`_13`_1^ 5.13.1 Описание]&]
[s3;         [^`#5`_13`_2^ 5.13.2 Определение]&]
[s3;         [^`#5`_13`_3^ 5.13.3 Использование]&]
[s3;     [^`#5`_14^ 5.14 `"text`"]&]
[s3;         [^`#5`_14`_1^ 5.14.1 Описание]&]
[s3;         [^`#5`_14`_2^ 5.14.2 Определение]&]
[s3;         [^`#5`_14`_3^ 5.14.3 Использование]&]
[s3;     [^`#5`_15^ 5.15 Неопределённые переменные]&]
[s3; [^`#6^ 6. Выкладка Диалогового Окна Шаблонов]&]
[s3; [^`#7^ 7. Деплоймент]&]
[s3; [^`#8^ 8. Эпилог]&]
[s3; [^`#9^ 9. Синтаксис файла  UPP]&]
[s0; &]
[s3;:1: [@5 1. Пролог]&]
[s5;# У проектов часто бывает одинаковая 
база, одинаковая структура и / или 
даже идентичные части кода. И одним 
из способов избежать ненужного ручного 
набора текста или рутинной работы, 
при создании нового однотипного проекта, 
является использование параметрированного 
шаблона.&]
[s5;# Шаблон пакета Ultimate`+`+ (UPT) и есть такой 
параметрированный шаблон. Он используется 
для создания одного или более пакетных 
файлов, которые далее можно будет 
редактировать. &]
[s5;# Могут использоваться несколько 
UPT.&]
[s5;# И новый UPT можно сделать самому! А 
чтобы у вас получилось `- это и есть 
главная задача этого документа.&]
[s0; &]
[s3;:2: [@5 2. Описание]&]
[s5;# UPT `- особый файл с расширением .upt, 
в котором находится текст и правила 
создания дополнительного текста.&]
[s5;# При запуске DinrusIDE или вызове `"Файл 
/ Открыть главный пакет..`", в появившемся 
окошке видим опцию `"Новый пакет`". 
Если выбрать её, DinrusIDE найдёт UPT`'ы 
и представить нам их списком. При 
выборе какого`-либо из них автоматически 
появляется предпросмотр создаваемых 
файлов/ файла, который можно изменить 
с помощью появляющихся вместе с ним 
опций. Когда всё у нас. как требуется, 
 `"Создать`" запишет файлы предпросмотра 
на диск и новый проект будет готов 
к тому, чтобы над ним работали.&]
[s0; &]
[s3;:3: [@5 3. Готовые к использованию шаблоны]&]
[s42;:3`_1: [@(128.0.255) 3.1 Обзор]&]
[s5; Ultimate`+`+ заключает в себе следующие 
шесть UPT`'ов:&]
[s5;l160;i150;O2; Базовое приложение CtrlLib&]
[s5;l160;i150;O2; Консольное приложение (без 
U`+`+)&]
[s5;l160;i150;O2; Консольный проект Core&]
[s5;l160;i150;O2; Приложение CtrlLib с главным 
окном&]
[s5;l160;i150;O2; Проект SDL (без U`+`+)&]
[s5;l160;i150;O2; SDL с пакетом Core&]
[s5; `"<пустой>`" означает, что никаких шаблонов 
пакета не будет применено.&]
[s42;:3`_2: [@(128.0.255) 3.2 Базовое приложение CtrlLib]&]
[s5;# Этот UPT строит только основу приложения 
с ГИП (GUI): необходимая директива include, 
 ГИП`-эквивалент `"main()`" и необходимый 
флаг построения. Среди опций есть 
генерирование файла header (with include guards) 
и добавление флага построения `"multithreaded`".&]
[s42;:3`_3: [@(128.0.255) 3.3 Консольное приложение 
(без U`+`+)]&]
[s5;# Этот UPT создаёт основы простого консольного
 приложения на C`+`+. В нём нельзя будет 
использовать даже не`-ГИП средства 
из Ultimate`+`+. И нет никаких дополнительных 
опций&]
[s5;# Этот шаблон подходит для использования 
DinrusIDE как иного другого редактора.&]
[s42;:3`_4: [@(128.0.255) 3.4 Консольный проект Core]&]
[s5;# Этот UPT строит базу консольного приложения,
 использующего только не`-ГИП средства 
из Ultimate`+`+. Среди опций есть генерирование 
файла header (with include guards) и добавление 
флага построения `"multithreaded`". Дополнительно 
шаблон может включать код, который 
считывает аргументы командной строки 
в const Vector<String>. (Заметьте, что это не 
одно и то же, что char`* argv`[`], `"указуемые`" 
у которых изменяемы и включают дополнительн
ую строку `- argv`[0`], путь к/имя выполняемой 
программы.)&]
[s42;:3`_5: [@(128.0.255) 3.5 Приложение CtrlLib с главным 
окном]&]
[s5;# Кажется, этот  UPT `- самый полезный, 
так как закладывает основу `"большого`" 
ГИП`-приложения. Он даёт файлы, содержащие 
фреймворк для пользовательского 
класса приложения, имя которого нужно 
выбрать пользователю (вам). Предлагается 
выкладка меню: без выкладок, общий 
файл выкладки, файл выкладки специфично 
для главного окна, и специфичный для 
главного окна файд выкладки, генерирующий 
кнопки `"OK`" и `"Отмена`". Наконец, имеется 
опция для генерации файла списка 
изображений и опция для добавления 
флага построения `"multithreaded`".&]
[s42;:3`_6: [@(128.0.255) 3.6 Проект SDL (без U`+`+)]&]
[s5;# Этот UPT генерирует основы консольного 
приложения Simple DirectMedia Layer (SDL). Средства 
Ultimate`+`+ использовать нельзя. Помимо 
опции по созданию заголовочника и 
опции по записи цикла событий, здесь 
можно найти ещё более трёх мультимедийных 
опций.&]
[s5;# Этот шаблон подходит, когда есть 
просто желание использовать DinrusIDE.&]
[s42;:3`_7: [@(128.0.255) 3.7 Пакет SDL с Core]&]
[s5;# Этот UPT создаёт основы консольного 
приложения Simple DirectMedia Layer (SDL)  Дополнительно, 
активируются не`-ГИП средства Ultimate`+`+. 
Помимо опции по созданию заголовочника 
и записи цикла событий, есть ещё более 
трёх мультимедийных.&]
[s0; &]
[s3;:4: [@5 4. Выкладка Файла Шаблона]&]
[s42;:4`_1: [@(128.0.255) 4.1 Расширение]&]
[s5; Расширение у файла UPT должно быть 
`".upt`". Если у файла другое расширение 
или оно отсутствует, он даже не будет 
рассматриваться, как файл, содержащий 
UPT.&]
[s42;:4`_2: [@(128.0.255) 4.2 Секции]&]
[s5; Файл UPT состоит из трёх отдельных 
разделов:&]
[s5;l160;i150;O2;~~~0; Строка заголовка&]
[s5;l160;i150;O2;~~~0; Определения переменных&]
[s5;l160;i150;O2;~~~0; Определения файлов&]
[s5; Если строка заголовка отсутствует, 
то файл считается повреждённым и 
игнорируется.&]
[s5; В принципе, определения переменных 
необязательны, хотя именно они делают 
 UPT гибким и ценным.&]
[s5; Отсутствие определения файлов, при 
синтактической норме, делает файл 
UPT абсолютно бесполезным. Всё`-таки, 
UPT должен сгненерировать файлы. А 
если нет определения файлов, то файл 
просто невозможно создать.&]
[s42;:4`_3: [@(128.0.255) 4.3 Порядок Секций]&]
[s5; Разделы в файле UPT должны появляться 
в следующем порядке:&]
[s5;l160; [* 1.] Строка заголовка&]
[s5;l160; [* 2.] Определения переменных `- а 
если они отсутствуют: определения 
файлов&]
[s5;l160; [* 3.] Определения файлов (если есть 
определения переменных)&]
[s5; Если строки заголовка нет в начале 
файла `- помимо коментариев или пробелов 
`-, то файл классифицируется как повреждённый
 и игнорируется. Строка заголовка 
заканчивается точкой с запятой.&]
[s5; Раздел определения переменных заканчиваетс
я в начале раздела определения файлов, 
которое начинается с (первого) `"`@`@`". 
Определения переменных, следующие 
за определением (`-ями) файлов, рассматривают
ся как простой текст, принадлежащий 
к (последнему) файлу.&]
[s5; Раздел определения файлов заканчивается 
в конце файла UPT.&]
[s42;:4`_4: [@(128.0.255) 4.4 Размер]&]
[s5; Размер файла UPT, а также число и размер(`-ы) 
генерируемых файла(`-ов), виртуально 
не ограничены.&]
[s0; &]
[s3;:5: [@5 5. Синтаксис]&]
[s42;:5`_1: [@(128.0.255) 5.1 Комментарии]&]
[s5; Можно писать стандартные комментарии 
C`+`+ (`"/`* ... `*/ и `"//`") как обычно. Внутри 
раздела определения переменных они 
ведут себя предсказуемо. А внутри 
раздела определения файла они становятся 
комментариями в сгенерированном 
файле. Если же `"/`*`" находится в разделе 
определения переменных, а `"`*/`" в определении
 файла, то результат будет печален.&]
[s42;:5`_2: [@(128.0.255) 5.2 Пробелы]&]
[s5; Внутри строки заголовка и раздела 
определения переменных, но вне слова 
или числа, лишние пробелы не имеют 
значения.&]
[s5; Внутри раздела определения файла 
и начиная со второй строки каждого 
определения файла внутри выражений 
применяется то же самое правило. Вне 
выражений любой пробел определяет 
выкладку соответствующего файла. 
Проще говоря, пробелы будут появляться 
как пробелы в сгенерированном файле.&]
[s42;:5`_3: [@(128.0.255) 5.3 Базовое Правило]&]
[s5; Находящийся внутри раздела определения 
файла, любой текст, не являющийся 
частью выражения, появится без изменений 
в сгенерированном файле.&]
[s42;:5`_4: [@(128.0.255) 5.4 Разграничители]&]
[s42;l160;:5`_4`_1: [@6 5.4.1 `"`@`@`"]&]
[s5;l160; `"`@`@`" отмечает начало определения 
файла. Всё, что находится до этого 
разграничителя, является строкой 
заголовка, определением переменной 
или определением предыдущего файла.&]
[s5;l160; Но`"`@`@`" является валидным разграничителе
м только в начале строки. В таком случае 
имеет значение даже пробел. Если `"`@`@`" 
не самые первые два символа в строке, 
то они представляют просто текст.&]
[s5;l160; `"`@`@`" функционирует не только как 
разграничитель, но в основном как 
(начало) выражение.&]
[s42;l160;:5`_4`_2: [@6 5.4.2 `"??`"]&]
[s5;l160; Хотя `"??`" отмечает возможную `"нуллификаци
ю`" определения файла, это больше выражение, 
нежели разграничитель.&]
[s5;l160; Оно должно появляться внутри определения
 файла. Если это не так, то файл UPT классифицир
уется как неполноценный и игнорируется.&]
[s5;l160; `"??`" является полноценным разграничителе
м только в начале строки. В таком случае 
имеет значение даже пробел. Если `"??`" 
не является двумя самыми первыми 
символами строки, то они представляют 
простой текст.&]
[s5;l160; `"??`" имеет смысл только в кооперации 
с выражением. В одиночку он делает 
свою строку невидимой.&]
[s42;:5`_5: [@(128.0.255) 5.5 Выражения]&]
[s42;l160;:5`_5`_1: [@6 5.5.1 Базовое Правило]&]
[s5;l160; Так как файл UPT оценивает CParser, 
можно использовать любые полноценные 
числовые или логические выражения 
языка Си или любые их сочетания, там, 
где выражение допустимо. Числовые 
значения должны быть типа `"double`".&]
[s5;l160; Выражения должны использоваться 
внутри раздела определения файла.&]
[s5;l160; Можно использовать такое выражение 
даже внутри раздела определения переменных,
 в качестве дефолтного значения переменной 
опции и переменной выбора, если для 
вас в этом есть какой`-то смысл.&]
[s5;l160; НИКОГДА НЕ ИСПОЛЬЗУЙТЕ ВЫРАЖЕНИЕ 
ДЛЯ УСТАНОВКИ ДЕФОЛТНОГО ЗНАЧЕНИЯ 
ПЕРЕМЕННОЙ ИМЕНИ ФАЙЛА ИЛИ ПЕРЕМЕННОЙ 
ИД! YOUR COMPUTER IS LIKELY TO CRASH AS SOON AS YOUR TEMPLATE 
IS SELECTED.&]
[s42;l160;:5`_5`_2: [@6 5.5.2 `"`@`@][/@6 выражение`_имяф][@6 `"]&]
[s5;l160; `"`@`@`" отмечает начало имени файла. 
Имя начинается сразу после второго 
`"`@`" (с третьего символа на строке) 
и заканчивается с последним символом 
логической строки. Если имя файла 
вводится как литерал, нужно убедиться 
в его полноценности, особенно если 
используется пробел. Полноценность 
имени файла зависит от ОС.&]
[s5;l160; Существует три типичных образца 
(файловые расширения просто примеры), 
хотя возможны иные или более сложные 
выражения:&]
[s0; [C -|`@`@<:]PACKAGE[C :>.cpp]&]
[s0; [C -|`@`@<:][/C переменная`_имени`_файла][C :>.hpp]&]
[s0; [C -|`@`@][/C литерал`_имяф][C .txt]&]
[s42;l160;:5`_5`_3: [@6 5.5.3 `"??][/@6 выражение][@6 `"]&]
[s5;l160; `"??`" определяет, должен ли быть 
создан файл. Оценивается следующее 
за ним выражение. Если результат равен 
true, тогда файл будет создан. Если результат 
равен false, весь файл будет скинут. 
Этому придерживается, даже если есть 
строки над строкой с `"??`".&]
[s5;l160; `"??`" имеет второе действие. Начиная 
с первого шаблона файла, содержащего 
`"??[/ выражение]`" (просто `"??`" недостаточно!) 
`"<:PACKAGE:>`" получаем из пути `- если он 
есть `- в переменной. Без такой строки 
путь `- если он есть `- удаляется из 
переменной. То есть:&]
[s5;l160; Независимо от значения `"[/ выражение]`", 
шаблоны имён файлов всех файлов, предшествую
щих шаблону файла, содержащему первое 
`"??[/ выражение]`"  не показывают пути 
`- если он имеется `- в <: PACKAGE :>.&]
[s5;l160; Если `"??[/ выражение]`" оценивается 
в `"true`", `"<:PACKAGE:>`" в содержащем его файловом 
шаблоне показывает путь `- если он 
имется `- и имя файла.&]
[s5;l160; Если `"??[/ выражение]`" оценивается 
в `"false`", то содержащий файловый шаблон 
просто doesn`'t show up.&]
[s5;l160; Независимо от значения `"[/ выражение]`", 
шаблоны имён файлов всех файлов, следующим 
за этим файловым шаблоном, содержащие 
первое `"??[/ выражение]`", ПОКАЗЫВАЮТ 
путь `- если он имеется `- в <: PACKAGE :>.&]
[s42;l160;:5`_5`_4: [@6 5.5.4 `"<: ... :>`"]&]
[s5;l160; `"<:`" и `":>`" преобразуют заключённый 
в них литерал в оцениваемое выражение. 
Затем итог отображается без этих 
разграничителей.&]
[s5;l160; Если строка заключена в кавычки, 
то будет получена ровно эта самая 
строка. Без кавычек она рассматривается 
как переменная. Если эта переменная 
определена, будет отображаться её 
значение. В противном случае ничего 
не будет.&]
[s5;l160; Можно сочетать численные выражения 
и строки, напр.:&]
[s5;l160; <:условие`_1 ? `"текст`_1`" : `"текст`_2`":>&]
[s5;l160; Можно встраивать `"<: ... :>`".&]
[s5;l160; `"<: :>`" и единичная `"<:`" показывает 
соответствующее сообщение об ошибке. 
Единичная `":>`" `- это просто строка.&]
[s42;l160;:5`_5`_5: [@6 5.5.5 `"<:? выражение :> ... <:.:>`"]&]
[s5;l160; Этот паттерн эмулирует `"if ([/ выражение]) 
...;`"&]
[s5;l160; Пробелы внутри `"<`::>`" не имеют значения. 
Между ними `- да: в итоговом файле будут 
сделаны пробелы.&]
[s42;l160;:5`_5`_6: [@6 5.5.6-|`"<:? выражение :> ... <:/:> ... 
<:.:>`"]&]
[s5;l160; Этот паттерн эмулирует `"if ([/ выражение]) 
...; else ...;`"&]
[s5;l160; Пробелы внутри `"<`::>`" не имеют значения. 
Между ними `- да: в итоговом файле будут 
сделаны пробелы.&]
[s42;:5`_6: [@(128.0.255) 5.6 `"PACKAGE`"]&]
[s42;l160;:5`_6`_1: [@6 5.6.1-|Описание]&]
[s5;l160; `"PACKAGE`" `- это предопределённый 
идентификатор переменной, которой 
присваивается содержимое поля ввода 
`"Имя пакета`".&]
[s42;l160;:5`_6`_2: [@6 5.6.2 Использование]&]
[s5;l160; Этот ввод фильтруется. Принимаются 
только числобуквенные символы `"`_`", 
`"/`", и `"`\`". Это значит, что можно ввести 
путь, но не определение диска, так 
как `":`" является неполноценным символом 
(например., Windows).  `"`\`" сразу же преобразуется 
в `"/`".&]
[s5;l160; Будет ли часть пути в поле ввода 
`"Имя пакета`" `- если имеется `- показана 
через <: PACKAGE :>, зависит от существования 
перед нею `"??[/ выражение]`" в файле UPT. 
Смотрите раздел 5.5.3 `"??[/ выражение]`".&]
[s5;l160; [C ... <: PACKAGE :> ...]&]
[s42;:5`_7: [@(128.0.255) 5.7 `"PACKAGE`_TOUPPER`"]&]
[s42;l160;:5`_7`_1: [@6 5.7.1 Описание]&]
[s5;l160; `"PACKAGE`_TOUPPER`" `- это предопределённый 
идентификатор переменной, которой 
присваивается содержимое поля ввода 
`"Имя пакета`", преобразованное в заглавные 
буквы. Если ранее были заглавные буквы, 
то они не изменяются.&]
[s5;l160; Причина существования этой переменной 
`- хорошо устоявшаяся практика записывать 
заглавными include`-гварды в файлах .hpp 
(.h).&]
[s42;l160;:5`_7`_2: [@6 5.7.2 Использование]&]
[s5;l160; В отличие от `"PACKAGE`", `"PACKAGE`_TOUPPER`" 
всегда содержит путевую часть `- если 
есть `- поля ввода `"Имя пакета`".&]
[s5;l160; [C ... <: PACKAGE`_TOUPPER :> ...]&]
[s42;:5`_8: [@(128.0.255) 5.8-|`"PACKAGE`_TOUPPER`_CAPS`"]&]
[s42;l160;:5`_8`_1: [@6 5.8.1 Описание]&]
[s5;l160; `"PACKAGE`_TOUPPER`_CAPS`" `- это предопределённый 
идентификатор переменной, которой 
присваивается контент поля ввода 
`"Имя пакета`", преобразованный в заглавные 
буквы. В отличие от `"PACKAGE`_TO`_UPPER`" последовател
ьность прописных букв, за которой 
следует заглавная буква, отделена 
`"`_`", но не наоборот. Более того, `"/`" 
заменяется на `"`_`", напр.:&]
[s5;l160; MyPath/MyPackage `-> MY`_PATH`_MY`_PACKAGE&]
[s5;l160; Причина существования этой переменной 
`- установившаяся практика написания 
заглавных include`-гвардов в файлах .hpp 
(.h).&]
[s5;l160; `"PACKAGE`_TOUPPER`_CAPS`" доступен только 
в выпусках Ultimate`+`+ после `"609`-dev3`".&]
[s42;l160;:5`_8`_2: [@6 5.8.2-|Использование]&]
[s5;l160; В отличие от `"PACKAGE`", `"PACKAGE`_TOUPPER`_CAPS`" 
всегда содержит путевую часть `- если 
она есть `-поля ввода `"Имя пакета`".&]
[s5;l160; [C ... <: PACKAGE`_TOUPPER`_CAPS :> ...]&]
[s42;:5`_9: [@(128.0.255) 5.9 Строка Заголовка]&]
[s42;l160;:5`_9`_1: [@6 5.9.1 Описание]&]
[s5;l160; Строка заголовочника идентифицирует 
файл UPT как таковой, именует шаблон 
и категоризует его.&]
[s42;l160;:5`_9`_2: [@6 5.9.2 `"template`"]&]
[s5;l160; Ключевое слово `"template`" идентифицирует 
файл UPT как таковой. Если это ключслово 
отсутствует в начале файла `- помимо 
комментариев или пробелов `-, то файл 
классифицируется как неполноценный 
и игнорируется. Это ключслово не должно 
заключаться в кавычки.&]
[s42;l160;:5`_9`_3: [@6 5.9.3 `"Name`"]&]
[s5;l160; Это имя файла UPT, который появляется 
в списке шаблонов диалогового окна 
`"Создать новый пакет`". Его обязательно 
заключают в кавычки. Если этого имени 
нет, файл классифицируется как неполноценны
й и игнорируется.&]
[s42;l160;:5`_9`_4: [@6 5.9.4 `"main`", `"sub`"]&]
[s5;l160; Эти ключевые слова не требуется 
заключать в кавычки. Они определяют 
масштаб файла UPT.&]
[s5;l160; Окно `"Выбрать главный пакет`" содержит 
опцию `"Все пакеты`". Если эта опция 
помечена флажком, все только `"main`" 
(главные) файлы UPT присутствуют в списке 
шаблонов диалогового окна `"Создать 
новый пакет`". Если эта опция не отмечена 
флажком, тогда будут показаны только 
все `"sub`" файлы UPT.&]
[s5;l160; Файл UPT может быть как `"main`", так 
и `"sub`".&]
[s5;l160; Если ни одно из ключевых слов не 
используется, тогда файл UPT молча 
игнорируется.&]
[s42;l160;:5`_9`_5: [@6 5.9.5 Использование]&]
[s5;l160; Строка заголовочника оканчивается 
точкой с запятой.&]
[s5;l160; [C template `"][/C имя][C `" `[main `| sub `| main sub `| 
sub main`];]&]
[s42;:5`_10: [@(128.0.255) 5.10 `"filename`"]&]
[s42;l160;:5`_10`_1: [@6 5.10.1 Описание]&]
[s5;l160; `"filename`" определяет переменную, 
которая является детерменированным 
для хоста именем файла. При его использовани
и появляется именованное поле радактировани
я. Ввод фильтруется. Только альфачисловые 
символы, `"`_`", м `".`" принимаются. Таким 
образом, определение пути или диска 
ввести невозможно (напр., Windows).&]
[s42;l160;:5`_10`_2: [@6 5.10.2 Определение]&]
[s5;l160; Ключевое клово и имя переменной 
не должно быть заключено в кавычки, 
а титул, наоборот, должен быть. Нарушение 
этого правила приведёт к выводу сообщения 
об ошибке и игнорированию файла UPT. 
Можно установить литерал, заключённый 
в кавычки, как дефолт. Использование 
имени переменной, хоть синтактически 
и корректно, не срабатывает. Определение 
переменной заканчивается точкой 
с запятой.&]
[s5;l160; [C filename `"титул`" ][/C имя`_переменной][C `[`= 
`"][/C дефолт`"][C `];]&]
[s42;l160;:5`_10`_3: [@6 5.10.3-|Использование]&]
[s5;l160; [C ... <: ][/C variable`_name][C  :> ...]&]
[s5;l160; Можно сравнивать переменные имён 
файлов и действовать, опираясь на 
это сравнение.&]
[s42;:5`_11: [@(128.0.255) 5.11 `"id`"]&]
[s42;l160;:5`_11`_1: [@6 5.11.1 Описание]&]
[s5;l160; `"id`" определяет переменную, которая 
детерминируется у хоста как строка. 
При её использовании появляется именованное
 поле редактирования. Ввод фильтруется. 
Принимаются только альфачисленные 
символы и `"`_`".&]
[s42;l160;:5`_11`_2: [@6 5.11.2 Определение]&]
[s5;l160; Ключевое слово и имя переменной 
в кавычки не заключаются, а титул 
должен быть в кавычках. Нарушение 
правила приводит в выводу сообщения 
об ошибке и файл UPT игнорируется. Можно 
установить литерал, заключённый в 
кавычки, в качестве дефолта. Использование 
вместо него мени переменной, хоть 
синтектически и корректно, но не работает. 
Определение переменной заканчивается 
точкой с запятой.&]
[s5;l160; [C id `"титул`" ][/C имя`_переменной][C `[`= 
`"дефолт][/C `"][C `];]&]
[s42;l160;:5`_11`_3: [@6 5.11.3 Использование]&]
[s5;l160; [C ... <: ][/C variable`_name][C  :> ...]&]
[s5;l160; Можно сравнивать переменные идентификат
оров и действовать, опираясь на это 
сравнение.&]
[s42;:5`_12: [@(128.0.255) 5.12 `"option`"]&]
[s42;l160;:5`_12`_1: [@6 5.12.1 Описание]&]
[s5;l160; `"option`" определяет переменную, представляю
щюю собой буево значениеe.При её использован
ии появляется бокс с проименованными 
опциями.&]
[s42;l160;:5`_12`_2: [@6 5.12.2 Определение]&]
[s5;l160; Ключевое слово и имя переменной 
нельзя заключать в кавычки, за исключением 
титула. В противном случае появляется 
сообщение об ошибке  и файл UPT игнорируется. 
Можно установить либо `"0`", либо `"1`", 
заключённый (или нет) в кавычки, как 
дефолтное значение. Всё остальное 
оценивается как `"false`". Использование 
вместо этого имени переменной, хотя 
и синтактически корректно, не работает. 
Определение переменной завершает 
точка с запятой.&]
[s5;l160; option `"титул`" [/C имя`_переменной]`[`= 
`[`"`]0 `| 1`[[/ `"]`]`];&]
[s42;l160;:5`_12`_3: [@6 5.12.3 Использование]&]
[s0;l160; [C ... <: ][/C variable`_name][C  ? ][/C number`_1][C  : ][/C number`_2][C  
:> ...]&]
[s0;l160; [C ... <: ][/C variable`_name][C  ? `"][/C string`_1][C `" : `"][/C string`_2][C `" 
:> ...]&]
[s0;l160; [C ... <: ? ][/C variable`_name][C  :>][/C number][C <: . :> ...]&]
[s0;l160; [C ... <: ? ][/C variable`_name][C  :>][/C string][C <: . :> ...]&]
[s0;l160; [C ... <: ? ][/C variable`_name][C  :>][/C number`_1][C <: / :>][/C number`_2][C <: 
. :> ...]&]
[s0;l160; [C ... <: ? ][/C variable`_name][C  :>][/C string`_1][C <: / :>][/C string`_2][C <: 
. :> ...]&]
[s5;l160; Можно сравнивать переменные опций 
и действовать из итога такого сравнения.&]
[s42;:5`_13: [@(128.0.255) 5.13 `"select`"]&]
[s42;l160;:5`_13`_1: [@6 5.13.1 Описание]&]
[s5;l160; `"select`" определяет переменную, которая 
работает как перечень. Целочисленные 
значения, начиная с 0, присваиваются 
проименованным опциям. Использование 
`"select`" вызывает появление проименованного 
DropList (выпадающего списка), из которого 
опции могут выбираться, но не редактироватьс
я.&]
[s42;l160;:5`_13`_2: [@6 5.13.2 Определение]&]
[s5;l160; Список опций должен находиться 
между фигурными скобками (`"парентезами`"). 
Ключевое клово и имя переменной не 
должно быть заключено в кавычки, а 
титул и опции, наоборот, должны. Нарушение 
правила, или отсутствие определения 
опций, приводит в выводу сообщения 
об ошибке и файл UPT игнорируется. Опции 
разделяются запятыми. Если нет, то 
они конкатенируются. Можно установить 
любое значение, заключённое (или нет) 
в кавычки, в качестве дефолтаt, но 
принимаютмя только целочисленные 
значения в диапазоне `"от 0 до номер`_последне
й`_опции `- 1`". Всё иное препятствует 
появлению  дефолтной опции. То же 
относится и к переменным, определены 
они или нет. Если деффолт вообще не 
указан, им становится первая опция. 
Определение переменной заканчивается 
точкой с запятой.&]
[s5;l160; [C option (`"опция`_1`", `"опция`_2`", ...) `"титул`"][/C  
имя`_переменной]&]
[s5;l160; [C -|`[`= 0 `| ... `| номер][/C `_последней`_опции 
`- 1][C `];]&]
[s42;l160;:5`_13`_3: [@6 5.13.3 Использование]&]
[s0;l160; [C ... <: ][/C variable`_name][C  `=`= ][/C zero`_based`_option`_index][C  
:> ... <: . :>]&]
[s0;l160; [C ... <: ][/C variable`_name][C  > ][/C zero`_based`_option`_index][C  
:> ... <: . :>]&]
[s0;l160; [C ... <: ][/C variable`_name][C  >`= ][/C zero`_based`_option`_index][C  
:> ... <: . :>]&]
[s0;l160; [C ... <: ][/C variable`_name][C  < ][/C zero`_based`_option`_index][C  
:> ... <: . :>]&]
[s0;l160; [C ... <: ][/C variable`_name][C  <`= ][/C zero`_based`_option`_index][C  
:> ... <: . :>]&]
[s0;l160; [C ... <: ][/C variable`_name][C  !`= ][/C zero`_based`_option`_index][C  
:> ... <: . :>]&]
[s5;l160; Можно выбрать переменные имён 
файлов.&]
[s42;:5`_14: [@(128.0.255) 5.14 `"text`"]&]
[s42;l160;:5`_14`_1: [@6 5.14.1 Описание]&]
[s5;l160; `"text`" определяет переменную, which 
is determined to host an arbitrary string. При её использовании
 появляется именованное поле редактирования
. Ввод не фильтруется. Допускается 
любой символ.&]
[s42;l160;:5`_14`_2: [@6 5.14.2 Определение]&]
[s5;l160; Ключевое слово и имя переменной 
не должны помещаться в кавычки, а 
титул `- нужно. В противном случае 
появится сообщение об ошибке и файл 
UPT будет проигнорирован. Можно установить 
литерал, заключённый в кавычки, в 
качестве дефолта. Использование вместо 
него имени переменной, хотя синтактически 
верно, не работает. Определение переменной 
завершается точкой с запятой.&]
[s5;l160; [C text `"][/C title][C `" ][/C variable`_name][C  `[`= `"][/C default`"][C `];]&]
[s42;l160;:5`_14`_3: [@6 5.14.3 Использование]&]
[s5;l160; [C ... <: ][/C variable`_name][C  :> ...]&]
[s5;l160; Можно сравнивать текстовые переменные 
и действовать, опираясь на это сравнение.&]
[s42;:5`_15: [@(128.0.255) 5.15 Неопределённые переменные]&]
[s5; Использование неопределённых переменных 
в синтактически корректных местах 
не вызывает вреда. тем не менее, неопределённ
ая переменная не имеет значения, даже 
не представляет собой 0.&]
[s0; &]
[s3;:6: [@5 6. Выкладка Диалогового Окна Шаблона]&]
[s5; The `"Create in`"`-DropList always shows the currently selected 
assembly as well as the `"uppsrc`" assembly.&]
[s5; The templates are sorted alphabetically. If you have many templates, 
the template list will get scrollbars. So the number of your 
templates is virtually unlimited.&]
[s5; The variables appear in the order as entered. If you have many 
variables, they may not all be shown. Just enlarge the window. 
But this dialog section will not get scrollbars, so the number 
of variables is indeed limited.&]
[s5; The preview window displays TAB characters as small upright 
rectangles, but after opening the generated project files these 
characters show up as usual.&]
[s0; &]
[s3;:7: [@5 7. Деплоймент]&]
[s5; DinrusIDE ищет файлы UPT в следующих директориях:&]
[s5;l160;i150;O2; dev&]
[s5;l160;i150;O2; src&]
[s5; Сканируются также и поддиректории.&]
[s28;l0;~~~256; &]
[s3;:8: [@5 8. Эпилог]&]
[s5; This documentation is valid for Ultimate`+`+ releases starting 
with `"610`-dev3`".&]
[s5; If you find any mistakes, be they just linguistic or typographic, 
please report them on the Ultimate`+`+ forum (http://www.arilect.com/upp/forum/).&]
[s5; If something is not clear or seems to be not clear, please report 
so on the Ultimate`+`+ forum.&]
[s5; If this documentation is insufficient or seems to be insufficient, 
please say so on the Ultimate`+`+ forum.&]
[s0; &]
[s3;:9: [@5 9. Синтаксис Файла UPP]&]
[s5; У каждого пакета имеется файл определения 
пакета, имя которого должно совпадать 
с именем папки пакета. Расширение 
у него `".upp`".&]
[s5; Если создаётся приложение Ultimate`+`+ 
GUI, у этого файла UPP, как правило, будут 
иметься три следующих раздела:&]
[s38;l160; &]
[s39;l160; uses&]
[s39;l160;     CtrlLib;&]
[s39;l160; &]
[s39;l160; file&]
[s39;l160; [/     file`_1.ext],&]
[s39;l160; [/     file`_2.ext],&]
[s39;l160;     ...;&]
[s39;l160; &]
[s39;l160; mainconfig&]
[s39;l160;     `"`" `= `"GUI [/ flag`_2] ...`";&]
[s0;l160; ]]